1 DRY (Don’t Repeat Yourself)

  • 不出现多次同样的字符串拼接
  • 不出现多次同样的对象访问
  • 不出现相似的函数
  • 不出现相似的模块代码
  • 不出现相似。。。
  • 一切相似的东西,都应该在一个地方表达,然后复用

2 KISS (Keep It Simple,Stupid)

  • 不过早优化
  • 不过度设计
  • 不复杂化代码
  • 不断重构

3 XP (eXtreme Programming)

  • 快速迭代
  • 持续集成,不断重构
  • 单元测试

4 面向对象设计原则

4.1 单一职责原则 (The Single Responsibility Principle)

  • 一个东西做一件事情,并把它做好
  • 应该有且仅有一个原因引起类的变更
  • 类的复杂度降低
  • 可读性提高
  • 可维护性提高
  • 变更引起的风险降低

4.2 开放-封闭原则 (The Open-Close Principle)

  • 让不能变的变不了,让可变的容易变
  • 软件实体(类,模块,函数等)应该是可以扩展的,但是不可修改的

4.3 里氏替换原则 (The Liskov Substitution Principle)

  • 抽象的东东能用具体的东东替代
  • 所有引用基类的地方必须能透明地使用其子类
  • 子类必须完全的实现父类的抽象方法
  • 子类可以有自己的个性
  • 覆盖或实现父类的方法时输入参数可以被放大
  • 覆盖或实现父类的方法时输出结果可以被缩小

4.4 接口隔离原则 (The Interface Segregation Principle)

  • 不相关的就不能强制被关注
  • 不应该强迫使用者依赖于他们不用的方法
  • 类间的依赖关系应该建立在最小的接口上
  • 接口尽量要小
  • 接口要高内聚
  • 可提供定制
  • 接口设计粒度要适度

4.5 依赖导致原则 (The Dependency Inversion Principle)

  • 容易变的不能被公用
  • 高层模块不应该依赖于低层模块,二者都应该依赖于抽象
  • 抽象不应该依赖于细节,细节应该依赖于抽象

4.6 最少知识原则 (Least Knowledge Principe),迪米特法则(Low of Demeter)

  • 不涉及到的就不应该关注
  • 出现在成员变量,方法的输入输出参数中的类被称为朋友类
  • 只和朋友交流
  • 尽量内敛,少对外开放接口

5 参考资料

  1. 《程序员修炼之道-从小共到专家》,The Pragmatic Programmer, From Journeyman to Master
  2. 《敏捷软件开发:原则、模式和实践》
  3. 《您的设计模式》
  4. 《设计模式之禅》

最后更新: 2022年03月02日 03:32

原始链接: http://rawbin-.github.io/dev-general/history/2017-04-21-code-design-rules/

× 赞赏这个人~
打赏二维码